// Keywords: choosy, choosiness, ornament, mate choice

initialize() {
	initializeMutationRate(1e-7);
	initializeMutationType("m1", 0.5, "f", 0.0);     // neutral
	initializeMutationType("m2", 0.5, "f", -0.025);  // ornamental
	initializeGenomicElementType("g1", c(m1, m2), c(1.0, 0.01));
	initializeGenomicElement(g1, 0, 99999);
	initializeRecombinationRate(1e-8);
}
1 early() { sim.addSubpop("p1", 500); }
1:10001 early() {
	fixedMuts = sum(sim.substitutions.mutationType == m2);
	inds = p1.individuals;
	osize = fixedMuts * 2 + inds.countOfMutationsOfType(m2);
	inds.tagF = log(osize + 1) * 0.1;
	
	if (sim.cycle % 1000 == 1)
		catn(sim.cycle + ": Mean ornament size == " + mean(osize));
}
mateChoice() {
	for (attempt in 1:5)
	{
		mate = sample(p1.individuals, 1, T, weights);
		
		if (runif(1) < mate.tagF + attempt * 0.1)
			return mate;
	}
	return float(0);
}
